package reflect;

import java.lang.reflect.Method;

public class ReflectDemo06 {
    public static void main(String[] args) throws Exception{
        /*
         *使用反射API执行无参数方法
         */
        //加载类   获得Class对象
        Class cls = Class.forName("reflect.Worker");
        //创建对象
        Object obj = cls.newInstance();
        //查找需要执行的方法.
        //getDeclaredMethod(方法名，参数类型1，参数类型2......) 在类上查找指定的方法
        Method method = cls.getDeclaredMethod("work");
        //method代表找到方法
        System.out.println(method);
        //调用方法: invoke(包含方法对象，参数1，参数2)
        method.invoke(obj);

        /*
         *调用有参数的方法
         */
        method = cls.getDeclaredMethod("workWith", String.class);
        method.invoke(obj,"Jerry");

        /*
         * 案例，测试执行两个参数的方法
         *-Worker添加两个参数的方法
         *-利用反射找到并且执行两个参数分方法
         */
    }

}
